package com.lyf.boot.base.system.entity;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lyf.boot.core.model.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;

/**
 * @author Luyufan
 * @date 2023/7/6 11:21
 */
@TableName("t_sys_perm")
@Data
@EqualsAndHashCode(callSuper = true)
public class SysPerm extends BaseEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = -3638556151617666532L;

    /**
     * 权限id
     */
    @TableId(value = "perm_id", type = IdType.ASSIGN_ID)
    private Long permId;

    /**
     * 权限名称
     */
    private String permName;

    /**
     * 权限标识
     */
    private String permCode;

    /**
     * 路径
     */
    private String path;

    /**
     * 重定向地址
     */
    private String redirect;

    /**
     * 组件名
     */
    private String name;

    /**
     * 组件
     */
    private String component;

    /**
     * 父级权限id
     */
    private Long parentId;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 排序值
     */
    private Integer sort;

    /**
     * 是否缓存该页面: 1:是  0:不是
     */
    private Integer keepAlive;

    /**
     * 权限类型: 0.目录 1.菜单 2.按钮
     */
    private Integer type;

    /**
     * 链接类型： 0.常规 1.iframe 2.外链
     */
    private Integer linkType;

    /**
     *  外链地址
     */
    private String link;

    /**
     * iframe地址
     */
    private String iframeSrc;

    /**
     * 状态：0.正常 1.禁用
     */
    private Integer status;

    /**
     * 是否固定标签页
     */
    private Integer affixTab;

    /**
     * 固定标签页排序
     */
    private Integer affixTabOrder;

    /**
     * 是否在新窗口打开
     */
    private Integer openInNewWindow;

    /**
     * 备注
     */
    private String remark;

    public boolean checkDir(){
        return ObjectUtil.equals(this.type, 0);
    }

    public boolean checkMenu(){
        return ObjectUtil.equals(this.type, 1);
    }

    public boolean checkButton(){
        return ObjectUtil.equals(this.type, 2);
    }

}
